package com.tour.controller;

import com.tour.bean.ReturnT;
import org.apache.log4j.Logger;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

/**
 * @ClassName GlobalExceptionResolver
 * @Author 张梦兴
 * @Date 2020/3/13 18:21
 * @describe
 * 全局异常处理类 GlobalExceptionResolver
 * 通过 @ControllerAdvice 指定该类为 Controller 增强类。
 * 通过 @ExceptionHandler 自定捕获的异常类型。
 * 通过 @ResponseBody 返回 json 到前端。
 */
@ControllerAdvice
public class GlobalExceptionResolver {

    private final Logger log=Logger.getLogger(GlobalExceptionResolver.class);
    /**
     * 处理所有不可知异常
     *
     * @param e 异常
     * @return json结果
     */
    @ExceptionHandler//异常捕获与处理
    @ResponseStatus(HttpStatus.OK)//使http返回的状态码是200
    @ResponseBody//使之返回json格式数据
    public ReturnT handleException(HttpServletRequest request, Exception e){
        // 打印异常堆栈信息
        log.error(e.getMessage(), e);
        ReturnT returnT = new ReturnT(500, "发生异常！");
        return returnT;
    }
}
